package com.cskaoyan.javase.oop2.encapsulate._1extends._9override._2notice;

/**
 * 方法重写的注意事项
 *      1.方法重写的快捷键,快速重写父类中的方法
 *          a.如果已经明确知道要重写父类方法方法名,可以在子类方法体当中直接写这个方法名字,然后回车重写.
 *          b.如果不知道要重写什么方法,希望查看一下父类中有哪些方法允许重写
 *              那就使用alt + insert
 *      2.在子类中重写父类方法时,一定,必须要加上注解"@Override"
 *          不加视为错误的方法重写
 *          注解"@Override"的作用:
 *          a.用于检查某个方法重写是否重写自父类,避免因为错误的认识,导致错误
 *          b.使用该注解修饰的方法一定重写自父类,可以提升代码的可读性
 *          总之,不要手动重写方法,用快捷键快速重写方法,会自动加上这个注解
 *
 *      3.有些父类的方法,是不允许子类重写的,包括:
 *          a.父类中私有的方法,以及所有子类没有权限的父类方法
 *              没有权限访问,就无法进行重写
 *          b.父类中的静态方法,子类不能重写
 *              假如存在同名,无非是属于各自类的静态成员罢了
 *          c.父类的构造器
 *              构造器无法继承,更不能重写
 *
 * @since 17:00
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {

    }
}

class Phone {
    void call() {
        System.out.println("用键盘拨号打电话!");
    }

    public static void testStatic(){}
}

class IPhone extends Phone {
    /*@Override
    public void call() {
        System.out.println("嘿Siri,给我打电话给隔壁小王!");
    }*/


    // @Override
    public static void testStatic(){}


    @Override
    void call() {
        System.out.println("打电话给老师!");
    }

    /*@Override
    public int hashCode() {
        return super.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        return super.equals(obj);
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    @Override
    public String toString() {
        return super.toString();
    }

    @Override
    protected void finalize() throws Throwable {
        super.finalize();
    }*/
}